import { defineConfig } from 'eslint-define-config';
import globals from 'globals';
import js from '@eslint/js';
import tseslint from '@typescript-eslint/eslint-plugin';
import vue from 'eslint-plugin-vue';

export default defineConfig({
    // 忽略生成的目录
    ignorePatterns: ['dist', 'node_modules'],

    // 继承 ESLint、TypeScript、Vue 的推荐配置
    extends: [
        js.configs.recommended,
        'plugin:vue/vue3-recommended',
        'plugin:@typescript-eslint/recommended',
    ],

    // 针对 TypeScript 和 Vue 文件
    overrides: [
        {
            files: ['**/*.{ts,tsx,vue}'],
            parser: 'vue-eslint-parser',
            parserOptions: {
                parser: '@typescript-eslint/parser',
                ecmaVersion: 2020,
                sourceType: 'module',
            },
            env: {
                browser: true,
                node: true,
                es6: true,
            },
            globals: globals.browser,
        },
    ],

    // 插件配置
    plugins: {
        vue,
        '@typescript-eslint': tseslint,
    },

    // 自定义规则
    rules: {
        // Vue 特定规则
        'vue/no-unused-vars': 'warn',
        'vue/html-self-closing': 'off',

        // TypeScript 特定规则
        '@typescript-eslint/no-explicit-any': 'off', // 允许使用 `any` 类型
        '@typescript-eslint/explicit-module-boundary-types': 'off',

        // 通用 ESLint 规则
        'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
        'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
    },

    // 解析设置
    settings: {
        'import/resolver': {
            typescript: {},
            alias: {
                map: [['@', './src']],
                extensions: ['.ts', '.js', '.vue', '.json'],
            },
        },
    },
});
